#define AMAX 35
#include <ctype.h>

/** 
 * fileWrite - Abre o arquivo para leitura
 * @author Saulo de Siqueira
 * @aParam pointer *sNameFile
 * @aParam pointer *sValues
 */
void fileWrite(char *sNameFileMepa, char *aValues) {

    FILE *fileWrite;
    char sDelimit[] = "2.TXT";
    char sNewFileNameMepa[AMAX];

    sNameFileMepa = "resultado.asm";

    // Cria o arquivo para leitura e escrita
    if ((fileWrite = fopen(sNameFileMepa, "w+t")) == NULL) {
        printf("Falha em criar o arquivo %s \n", sNameFileMepa);
    } else {
        fputs(aValues, fileWrite);
    }
    fclose(fileWrite);
}

/** 
 * openFile - Abre o arquivo para leitura
 * @author Saulo de Siqueira
 * @aParam pointer *sNameFile
 */
void openFile(char *sNameFile) {
    FILE *fp;
    char aString[AMAX];
    char *sLinha;
    char sDelimitadores[] = " \n ,";
    char aValues[AMAX];

    char *ptrFuncMepa;
    char *ptrArg1;
    char *ptrArg2;
    char *ptrArg3;

    char *aResult;

    char *aAux;

    int iControle;
    int iGrava = 0;

    ptrFuncMepa = (char*) malloc(1024);

    sLinha = (char*)malloc(1024);
    aResult = (char*) malloc(1024);
    aAux = (char*) malloc(1024);

    ptrArg1 = (char*) malloc(1024);
    ptrArg2 = (char*) malloc(1024);
    ptrArg3 = (char*) malloc(1024);

    if ((fp = fopen(sNameFile, "r")) == NULL) {
        printf("Arquivo %s nao encontrado \n ,", sNameFile);
    } else {
        printf("Arquivo sendo lido: \n");
        while (fgets(aString, AMAX, fp) != NULL) {
            sLinha = strtok(aString, sDelimitadores);
            iControle = 0;
            while (sLinha) {
                if (strlen(sLinha) == 4){
                    strcpy(ptrFuncMepa, sLinha);
                } else {
                    int i;
                    for(i=0; i<strlen(sLinha); i++){
                        if(isdigit(sLinha[i])){
                            if (iControle == 0){
                                strcpy(ptrArg1, sLinha);
                                iControle++;
                                break;
                            } else if(iControle == 1) {
                                strcpy(ptrArg2, sLinha);
                                iControle++;
                                break;
                            } else {
                                strcpy(ptrArg3, sLinha);
                                iControle++;
                                break;
                            }
                        }
                    }
                }
                // chamar aqui fSwitch();
                sLinha = strtok(NULL, sDelimitadores);
            }
            if (iGrava == 0) {
                strcpy(aResult, fSwitch(ptrFuncMepa, ptrArg1,ptrArg2,ptrArg3));
                iGrava++;
            } else {
                strcat(aResult, fSwitch(ptrFuncMepa, ptrArg1,ptrArg2,ptrArg3));
            }
        }
    }
    fileWrite("saulo", aResult);
   // system("PAUSE");
}